package com.zdft.promotion.asyn.bean;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zdft.promotion.common.bean.AbstractBean;
import lombok.Data;

import java.util.Date;
import java.util.UUID;

/**
 * 异步处理信息实体
 *
 * @author dxh
 */
@Data
@TableName("WAREHOUSE_ASYN_PUSH")
@KeySequence("SEQ_MDM_ASYN_PUSH")
public class AsynPushBean extends AbstractBean {
    @TableId(type = IdType.INPUT, value = "ID")
    private Long id;

    /**
     * 关联ID,插入表对应主键(若表之间有强关联需同一个事物同步,则保存主表id,同步时关联查询其他表数据)
     */
    private String refrenceId;

    /**
     * 100 入库 200 出库 300 移仓调拨 301 移仓调拨明细
     * 详见@{@link com.zdft.promotion.common.constant.AysnPushConstant}
     * @param model
     * @return
     * @throws InterruptedException
     */
    private Integer type;

    /**
     * 具体类型(处理方法名，需配置定时任务扫描)
     */
    private String subType;

    /**
     * 操作类型 1：新增 2：修改 3：删除
     */
    private Integer operateType;

    /**
     * erp更新状态 0：待处理 1：处理成功 2：处理失败 3：无需处理
     */
    private Integer status;

    /**
     * 失败次数
     */
    private Integer failCount;

    /**
     * 备注
     */
    private String remark;

    private String key;

    /**
     * 消费领域
     * 1.既推送到erp，又更新es
     * 2.不需要推送到erp
     */
    private Integer consumerType;

    private Integer deleted;

    /**
     * erp更新状态 0：待处理 1：处理成功 2：处理失败 3：无需处理
     */
    private Integer esUpdateStatus;

    public AsynPushBean() {
    }

    public AsynPushBean(String refrenceId, Integer type, String subType, Integer operateType) {
        this.refrenceId = refrenceId;
        this.type = type;
        this.subType = subType;
        this.operateType = operateType;
        this.esUpdateStatus=0;
        this.failCount = 0;
        this.key = UUID.randomUUID().toString();
        this.consumerType=2;
        this.setCreateTime(new Date());
    }
}
